﻿using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OracleClient;
using Biblioteca.Utils;
using Pms.Utils;
using Biblioteca.DataBase;

namespace SERIX.Classes
{
    public class CFuncaoTec
    {

        private string IDT_FUNCAO_TECNICO;
        private string DSC_FUNCAO_TECNICO;

        public CFuncaoTec()
        {

        }
        public CFuncaoTec(string IDT_FUNCAO, string DSC_FUNCAO)
        {
            this.IDT_FUNCAO_TECNICO = IDT_FUNCAO;
            this.DSC_FUNCAO_TECNICO = DSC_FUNCAO;
        }

      

        #region Propriedades
        /// <sumary>
        /// Identificador da Função do tecnico
        /// <sumary>
        public string Idt_funcao
        {
            get
            {
                return this.IDT_FUNCAO_TECNICO;
            }
            set
            {
                this.IDT_FUNCAO_TECNICO = value;
            }
        }
        /// <sumary>
        /// Descricao da Função do tecnico
        /// <sumary>
        public string Dsc_funcao
        {
            get
            {
                return this.DSC_FUNCAO_TECNICO;
            }
            set
            {
                this.DSC_FUNCAO_TECNICO = value;
            }
        }
        #endregion Propriedades


        /// <summary>
        /// Inserindo um novo Tipos_vinc_propriedades.
        /// </summary>
        public void Inserir(string Login)
        {
            OracleCommand command = new OracleCommand();
            OracleTransaction trans;

            string SQL = @"insert into Serix.SRX_FUNCAO_TECNICO
			                  ( IDT_FUNCAO_TECNICO, DSC_FUNCAO_TECNICO )
						   values
						      ( :IDT_FUNCAO_TECNICO, :DSC_FUNCAO_TECNICO )";

            try
            {
                command.Connection = BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, Login, BiblioPMS.Demo);
                trans = command.Connection.BeginTransaction();
                command.Transaction = trans;
                command.CommandType = CommandType.Text;
                command.CommandText = SQL;

                command.Parameters.Add(new OracleParameter("IDT_FUNCAO_TECNICO", OracleType.Number));
                command.Parameters.Add(new OracleParameter("DSC_FUNCAO_TECNICO", OracleType.VarChar));

                command.Parameters["IDT_FUNCAO_TECNICO"].Value = this.IDT_FUNCAO_TECNICO;
                command.Parameters["DSC_FUNCAO_TECNICO"].Value = this.DSC_FUNCAO_TECNICO;
                command.ExecuteNonQuery();
                command.Parameters.Clear();
                command.Transaction.Commit();
            }
            catch (Exception e)
            {
                command.Transaction.Rollback();

                if (e is OracleException)
                    throw new Exception(Biblio.ObterMensagem(((OracleException)e).Code, e.Message));
                else
                    throw new Exception(e.Message + " : " + "");
            }
        }

        /// <summary>
        /// Alterando um Tipos_vinc_propriedades.
        /// </summary>
        public void Alterar(string Login)
        {
            OracleCommand command = new OracleCommand();
            OracleTransaction trans;

            string SQL = @"update Serix.SRX_FUNCAO_TECNICO set 
			                   DSC_FUNCAO_TECNICO = :DSC_FUNCAO_TECNICO
						   where
						       IDT_FUNCAO_TECNICO = :IDT_FUNCAO_TECNICO ";

            try
            {
                command.Connection = BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, Login, BiblioPMS.Demo);
                trans = command.Connection.BeginTransaction();
                command.Transaction = trans;
                command.CommandType = CommandType.Text;
                command.CommandText = SQL;

                command.Parameters.Add(new OracleParameter("IDT_FUNCAO_TECNICO", OracleType.Number));
                command.Parameters.Add(new OracleParameter("DSC_FUNCAO_TECNICO", OracleType.VarChar));

                command.Parameters["IDT_FUNCAO_TECNICO"].Value = this.IDT_FUNCAO_TECNICO;
                command.Parameters["DSC_FUNCAO_TECNICO"].Value = this.DSC_FUNCAO_TECNICO;
                command.ExecuteNonQuery();
                command.Parameters.Clear();
                command.Transaction.Commit();
            }
            catch (Exception e)
            {
                command.Transaction.Rollback();

                if (e is OracleException)
                    throw new Exception(Biblio.ObterMensagem(((OracleException)e).Code, e.Message));
                else
                    throw new Exception(e.Message + " : " + "");
            }
        }

        /// <summary>
        /// Exclui um  Tipos_vinc_propriedades.
        /// </summary>
        public void Excluir(string Login)
        {
            Tabela tab = new Tabela("SRX_FUNCAO_TECNICO", BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, Login, BiblioPMS.Demo));
            tab.adicionarFiltro(new Coluna("IDT_FUNCAO_TECNICO", DbType.Int32, this.IDT_FUNCAO_TECNICO));
            tab.delete();
        }

        static public DataTable ObterTodos(string login)
        {

            OracleCommand command = new OracleCommand();

            string SQL = @"select * from Serix.SRX_FUNCAO_TECNICO order by DSC_FUNCAO_TECNICO ";

            try
            {
                command.Connection = BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, login, false);
                command.CommandType = CommandType.Text;
                command.CommandText = SQL;

                DataTable tbl = new DataTable();
                tbl.Load(command.ExecuteReader(CommandBehavior.CloseConnection));
                return tbl;

            }
            catch (Exception e)
            {

                if (e is OracleException)
                    throw new Exception(Biblio.ObterMensagem(((OracleException)e).Code, e.Message));
                else
                    throw new Exception(e.Message + " : " + "");
            }

        }

        static public CFuncaoTec PesquisaporCodigo(string idt_funcao_tecnico, string login)
        {
            CFuncaoTec obj;
            string SQL = @"SELECT *
                            FROM  Serix.SRX_FUNCAO_TECNICO 
                            WHERE IDT_FUNCAO_TECNICO = :IDT_FUNCAO_TECNICO";
            Query qy = null;
            try
            {
                qy = new Query(BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, login, BiblioPMS.Demo), SQL);
                qy.AdicionarParametro(":IDT_FUNCAO_TECNICO", DbType.String, idt_funcao_tecnico);

                qy.Executar();
                obj = new CFuncaoTec(qy.ObterCampo("IDT_FUNCAO_TECNICO"), qy.ObterCampo("DSC_FUNCAO_TECNICO"));
            }
            catch
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                {
                    qy.FecharConexao();
                }
                return new CFuncaoTec();
            }
            finally
            {
                qy.FecharConexao();
            }
            return obj;
        }

        static public int ObterNovoIdt(string login)
        {
            string SQL = @"SELECT COUNT(IDT_FUNCAO_TECNICO) FROM SRX_FUNCAO_TECNICO ";
            Query qy = null;
            try
            {
                qy = new Query(BiblioPMS.ObterConexao(BiblioPMS.aplicacaoSNG, login, BiblioPMS.Demo), SQL);
                qy.Executar();
                return (Convert.ToInt32(qy.ObterCampo("COUNT(IDT_FUNCAO_TECNICO)"))) +1;
            }
            catch
            {
                if (qy.EstadoConexao() == ConnectionState.Open)
                {
                    qy.FecharConexao();
                }
                return -1;
            }
            finally
            {
                qy.FecharConexao();
            }
        }

    }
}
